Quantum Computer Programming